Операции с массивами
Операции с массивами
Проверка наличия значений в массиве
contains — оператор, проверяющий наличие значения в массиве
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags contains "malware_detected" | Возвращает все логи, в которых массив tags содержит хотя бы один элемент "malware_detected" | { "tags": ["malware_detected", "endpoint"] } |
Проверка отсутствия значений в массиве
not contains — оператор, проверяющий отсутствие значения в массиве
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags not contains "authentication_success" | Возвращает все логи, в которых массив tags не содержит элемента "authentication_success" | { "tags": ["authentication_failure", "external_ip", "brute_force", "warning"] } |
Проверка наличия всех значений из списка
contains all — оператор, проверяющий наличие всех указанных значений в массиве
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags contains all ["authentication_failure", "external_api", "brute_force"] | Возвращает все логи, в которых массив tags содержит все перечисленные значения | { "tags": ["authentication_failure", "external_api", "brute_force", "warning"] } |
Проверка наличия любого значения из списка
contains any — оператор, проверяющий наличие хотя бы одного значения из списка
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags contains any ["anomaly", "suspicious"] | Возвращает все логи, в которых массив tags содержит хотя бы одно из указанных значений | { "tags": ["anomaly", "privileged_user"] },{ "tags": ["suspicious"] } |
Проверка состояния массива
is empty — оператор, проверяющий, является ли массив пустым
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags is empty | Возвращает все логи, в которых массив tags существует, но не содержит элементов | { "tags": [] } |
is not empty — оператор, проверяющий, является ли массив непустым
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags is not empty | Возвращает все логи, в которых массив tags содержит хотя бы один элемент | { "tags": ["x"] } |
Проверка размера массива
.length() — метод, возвращающий количество элементов в массиве
| Пример | Описание | Результат в виде лога |
|---|---|---|
tags.length() > 2 | Возвращает все логи, в которых массив tags содержит более двух элементов | { "tags": ["a", "b", "c"] } |
Удаление дубликатов
.distinct() — метод, удаляющий дубликаты в массиве. Возвращает массив без повторяющихся элементов
Особенности метода:
- Пустые
NULLзначения игнорируются - Порядок элементов сохраняется (остаётся только первый экземпляр)
- При сравнении учитываются типы данных
| Пример | Описание | Результат в виде лога |
|---|---|---|
detected_signatures.distinct() | Возвращает массив detected_signatures без повторяющихся элементов | { "detected_signatures": ["Trojan.Generic.123", "Adware.FakeAV", "Exploit.CVE-2021-34527"] } |
Работа с элементами массива
Основные правила работы с элементами массива:
- Индексация начинается с
0 - Поддерживаются все операторы сравнения
- Возможно логическое связывание условий
Проверка на равенство заданного элемента массива
| Пример | Описание | Результат в виде лога |
|---|---|---|
location[0] = 55.7558 and location[1] = 37.6173 | Возвращает все логи с точной геолокацией в центре Москвы | { "location": [55.7558, 37.6173] } |
Проверка заданного элемента массива на условие
| Пример | Описание | Результат в виде лога |
|---|---|---|
(location[0] > 55.7 and location[0] < 55.82) and (location[1] > 37.58 and location[1] < 37.66) | Возвращает все логи, координаты которых находятся в радиусе 5-10 км от центра Москвы | { "location": [55.7605, 37.6209] },{ "location": [55.8011, 37.618] } |